package ExceptionDemo;

import java.util.Scanner;

/*
Throwable:
         Error:严重的错误
         Exception:在编译或运行时,可能出现的错误
                   RuntimeException:编译通过,在运行时可能出现的错误
                   没有继承RuntimeException的异常:编译时会报错(不包括语法错误),提醒需要给出处理方法
处理方法:
        1.try/catch:捕获异常,程序可以继续执行
        2.throws:抛出异常,会在错误处中断程序
        throws声明存在异常,throw是抛出异常对象,若是编译时异常,必须throws声明,运行时异常,不需要throws声明
自定义异常:
        通过继承Exception或RuntimeException类,自定义异常
Throwable类常用方法:
                    getMessage():获取错误原因
                    getStackTrace():获取详细信息
  子类重写父类方法时:不能throws父类没有的异常,也不能throws比父类更大的异常.建议使用try/catch

 */
public class ExceptionDemo {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        Student student=new Student();
        System.out.println("请输入姓名:");
        String name=scanner.next();
        student.setName(name);
        System.out.println("请输入年龄:");
        int age;
        while (true){
            try{
                age=Integer.parseInt(scanner.next());
                student.setAge(age);
                break;
            }catch (NumberFormatException e){
                System.out.println("输入格式有误,重试");
            } catch (Exception e) {
                String message = e.getMessage();
                System.out.println(message);

            }
        }

        System.out.println(student.toString());

    }
}
